/**
*
*  URL encode / decode
*  http://www.webtoolkit.info/
*
**/
 
var Url = {
 
	// public method for url encoding
	encode : function (string) {
		return escape(this._utf8_encode(string));
	},
 
	// public method for url decoding
	decode : function (string) {
		return this._utf8_decode(unescape(string));
	},
 
	// private method for UTF-8 encoding
	_utf8_encode : function (string) {
		string = string.replace(/\r\n/g,"\n");
		var utftext = "";
 
		for (var n = 0; n < string.length; n++) {
 
			var c = string.charCodeAt(n);
 
			if (c < 128) {
				utftext += String.fromCharCode(c);
			}
			else if((c > 127) && (c < 2048)) {
				utftext += String.fromCharCode((c >> 6) | 192);
				utftext += String.fromCharCode((c & 63) | 128);
			}
			else {
				utftext += String.fromCharCode((c >> 12) | 224);
				utftext += String.fromCharCode(((c >> 6) & 63) | 128);
				utftext += String.fromCharCode((c & 63) | 128);
			}
 
		}
 
		return utftext;
	},
 
	// private method for UTF-8 decoding
	_utf8_decode : function (utftext) {
		var string = "";
		var i = 0;
		var c = c1 = c2 = 0;
 
		while ( i < utftext.length ) {
 
			c = utftext.charCodeAt(i);
 
			if (c < 128) {
				string += String.fromCharCode(c);
				i++;
			}
			else if((c > 191) && (c < 224)) {
				c2 = utftext.charCodeAt(i+1);
				string += String.fromCharCode(((c & 31) << 6) | (c2 & 63));
				i += 2;
			}
			else {
				c2 = utftext.charCodeAt(i+1);
				c3 = utftext.charCodeAt(i+2);
				string += String.fromCharCode(((c & 15) << 12) | ((c2 & 63) << 6) | (c3 & 63));
				i += 3;
			}
 
		}
 
		return string;
	}
 
}


var Micro = {
	lables: [
		'Напишите, о чем Вы сейчас думаете?',
		'Напишите друзьям',
		'Напишите, что у Вас нового?',
		'Напишите, как у Вас дела?',
		'Поделитесь новостью с друзями',
		'Что Вы думаете о погоде?',
		'Порекомендуйте друзьям фильм',
		'Идете в кино? Позовите друзей',
		'Что Вы сейчас слушаете?'
	],
	
	init: function() {
		$('#micro_form').submit(function() { return Micro.submit();});
		
		$('#micro_text')
			.focus(function() {Micro.focus();})
			.blur(function() {Micro.blur();});
	
		$('#micro_label')
			.text(Micro.lables[Math.floor(Math.random()*Micro.lables.length)])
			.click(function() {$('#micro_text').focus();});
			
		
	},
	
	bar: function() {
		var bar = $('#micro_bar');
		
		var checkBodyClick = function(e) {
			if (!bar.isMouseOn(e.pageX, e.pageY)) {
				bar.hide();
				$(document).unbind('click', checkBodyClick);
			}
		};
		
		if (bar.css('display') == 'none') {
			bar.show();
			
			$(document).bind('click', checkBodyClick);
		}
	},
	
	focus: function() {
		$('#micro_label').hide();
	},
	
	blur: function() {
		if($('#micro_text').val() == '') {
			$('#micro_label').show();
		}
	},
	
	submit: function() {
		var text = $('#micro_text').val();
		
		if (text == '') {
			var errorBlock = $('<div>').addClass('error').text('Необходимо написать хоть что-то');
					
			$('div.micro').append(errorBlock);
			
			errorBlock.slideDown('normal');

			setTimeout(function() {
				errorBlock.slideUp('normal', function() { $(this).remove(); });
			}, 2000);
			
			return false;
		}
		
		var errorMsg = function() {
			var errorBlock = $('<div>').addClass('error').text('Не получилось, попробуйте снова');
					
			$('div.micro').append(errorBlock);
			
			errorBlock.slideDown('normal');

			setTimeout(function() {
				errorBlock.slideUp('normal', function() { $(this).remove(); });
			}, 2000);
		};
		
		$.ajax ({
			url: baseURI+'/micro/ajax_add_post/',
			data: 'data[new][text]='+Url.encode(text),
			dataType: 'xml',
			type: 'post',
			beforeSend: function() {
				$('#micro_submit').addClass('loading');
			},
			complete: function() {
				$('#micro_submit').removeClass('loading');
			},
			error: function () {
				errorMsg();
			},
			success: function (xml) {
				if ($(xml).find('result').text()) {
					$('#micro_text').val('').blur();
					$('#micro_label').text('Сделано! Написать еще?').show();
				} else {
					errorMsg();
				}
			}
		});
		
		return false;
	}
};

$(document).ready(function() {
	Micro.init();
});